In [1]:
# a szokásos rutinok betöltése
%pylab inline
from scipy.integrate import * # az integráló rutinok betöltése
import matplotlib.pyplot as plt

from IPython.core.display import HTML
Populating the interactive namespace from numpy and matplotlib
In [2]:
HTML('''<script>
code_show=true;
function code_toggle() {
 if (code_show){
 $('div.input').hide();
 } else {
 $('div.input').show();
 }
 code_show = !code_show
}
$( document ).ready(code_toggle);
</script>
<form action="javascript:code_toggle()"><input type="submit"
value="Click here to toggle on/off the raw code."></form>''')
Out[2]:
In [3]:
heaviside = lambda x: 0.5 if x == 0 else 0 if x < 0 else 1
In [4]:
def egyenes(pontok,gamma):
    a=pontok[0]
    b=pontok[1]
    e= b - a
    q = lambda t: 1/(gamma-1)*(gamma * (a[1]+e[1] * t)*e[0] + (a[0]+e[0] * t)*e[1])
    w =  lambda t: (a[1]+e[1] * t)*e[0]
    qplusz = lambda t: q(t) * heaviside(q(t))
    munka = quad(w,0,1)
    Qfel = quad(qplusz,0,1)
    Qtot = quad(q,0,1)
    
    figsize(6,6)
    vonalv = 4.0 #  vonal vastagsag
    dashv = '--'  # '-' -> solid, '--' -> szaggatott
    
    if a[1] == b[1] : 
        if a[0] > b[0]:
                x = [a[0],b[0]]
                y = [a[1],b[1]]
                plot(x,y,color='b', ls=dashv,linewidth=vonalv)
        
        elif a[0] < b[0]:
                x = [a[0],b[0]]
                y = [a[1],b[1]]
                plot(x,y,color='r', ls='-',linewidth=vonalv)
    elif a[0] == b[0] : 
         if a[1] > b[1]:
                x = [a[0],b[0]]
                y = [a[1],b[1]]
                plot(x,y,color='b', ls=dashv,linewidth=vonalv)
        
         elif a[1] < b[1]:
                x = [a[0],b[0]]
                y = [a[1],b[1]]
                plot(x,y,color='r', ls='-',linewidth=vonalv)
    
    else : 
        t0 = -(gamma * a[1] *e[0]+a[0]* e[1])/((gamma +1)*(e[0]*e[1]))
        V0 = a[0] + e[0] * t0
        p0 = a[1] + e[1] * t0
        #V00 = gamma/(gamma+1) * (a[0]* b[1]-a[1]* b[0])/(b[1]-a[1])
        #p00 = (a[1]* b[0]-a[0]* b[1])/(gamma +1)/(b[0]-a[0])
    
        if t0 < 0 or t0 > 1 :
            if q(0) < 0 :
                x = [a[0],b[0]]
                y = [a[1],b[1]]
                plot(x,y,color='b', ls=dashv,linewidth=vonalv)
            elif q(0) > 0 :
                x = [a[0],b[0]]
                y = [a[1],b[1]]
                plot(x,y,color='r', ls='-',linewidth=vonalv)
        else :
            if q(0) < 0 :
                xblue = [a[0],V0]
                yblue = [a[1],p0]
                xred = [V0,b[0]]
                yred = [p0,b[1]]
                plot(xblue,yblue,color='b', ls=dashv,linewidth=vonalv)
                plot(xred,yred,color='r', ls='-',linewidth=vonalv)
            else:
                xred = [a[0],V0]
                yred = [a[1],p0]
                xblue = [V0,b[0]]
                yblue = [p0,b[1]]
                plot(xblue,yblue,color='b', ls=dashv,linewidth=vonalv)
                plot(xred,yred,color='r', ls='-',linewidth=vonalv)
          
    xlabel('V',fontsize=20)
    ylabel('p',fontsize=20)
            
    return (munka,Qfel,Qtot)
In [5]:
def sokszog(sarkok,gamma):
    nsarok = len(sarkok)
    
    res=[]
    for i in range(0,nsarok-1):
        res.append(egyenes([sarkok[i],sarkok[i+1]],gamma))
    
    res.append(egyenes([sarkok[nsarok-1],sarkok[0]],gamma))
    
    xx = []
    yy = []
    for i in range(0,len(sarkok)):
        xx.append(sarkok[i][0])
        yy.append(sarkok[i][1])

    xlim(0,1.2 * max(xx))
    ylim(0,1.2 * max(yy))   
    
    munka = sum(array(res)[:,0,0])
    Qfel = sum(array(res)[:,1,0])
    Qtot = sum(array(res)[:,2,0])
    
    return(munka/Qfel,munka,Qfel,Qtot-munka)

Körfolyamatok hatásfoka ideális gázra

($\gamma = \frac{c_p}{c_V} = 5/3$)

A p-V síkon a körfolyamatban a piros (folytonos) vonal hőfelvételt, a kék (szaggatott) vonal hőleadást jelent.

---------------------------------------------------

In [6]:
sarkok=[array([1, 3]),array([3,2]),array([2,1])]
gamma=5/3

print ('sarkok koordinátái: ',sarkok)
print()
#print(len(sarkok))
   
res = sokszog(sarkok,gamma)

print('hatásfok = ',"%.4f" % res[0])
print('W = ',"%.3f" % res[1])
print('Qfel = ',"%.3f" % res[2])
print('check: Qfel- Qle-W = ',"%.7f" % res[3])
sarkok koordinátái:  [array([1, 3]), array([3, 2]), array([2, 1])]

hatásfok =  0.1461
W =  1.500
Qfel =  10.266
check: Qfel- Qle-W =  0.0000000

---------------------------------------------------

In [7]:
sarkok=[array([1, 2]),array([2,3]),array([3,2])]
gamma=5/3

print ('sarkok koordinátái: ',sarkok)
print()
#print(len(sarkok))
   
res = sokszog(sarkok,gamma)

print('hatásfok = ',"%.4f" % res[0])
print('W = ',"%.3f" % res[1])
print('Qfel = ',"%.3f" % res[2])
print('check: Qfel- Qle-W = ',"%.7f" % res[3])
sarkok koordinátái:  [array([1, 2]), array([2, 3]), array([3, 2])]

hatásfok =  0.0909
W =  1.000
Qfel =  11.000
check: Qfel- Qle-W =  0.0000000

---------------------------------------------------

In [8]:
sarkok=[array([1, 2]),array([3,2]),array([2,1])]
gamma=5/3

print ('sarkok koordinátái: ',sarkok)
print()
#print(len(sarkok))
   
res = sokszog(sarkok,gamma)

print('hatásfok = ',"%.4f" % res[0])
print('W = ',"%.3f" % res[1])
print('Qfel = ',"%.3f" % res[2])
print('check: Qfel- Qle-W = ',"%.7f" % res[3])
sarkok koordinátái:  [array([1, 2]), array([3, 2]), array([2, 1])]

hatásfok =  0.0997
W =  1.000
Qfel =  10.031
check: Qfel- Qle-W =  -0.0000000

---------------------------------------------------

In [9]:
sarkok=[array([1, 2]),array([3,2]),array([3,1])]
gamma=5/3

print ('sarkok koordinátái: ',sarkok)
print()
#print(len(sarkok))
   
res = sokszog(sarkok,gamma)

print('hatásfok = ',"%.4f" % res[0])
print('W = ',"%.3f" % res[1])
print('Qfel = ',"%.3f" % res[2])
print('check: Qfel- Qle-W = ',"%.7f" % res[3])
sarkok koordinátái:  [array([1, 2]), array([3, 2]), array([3, 1])]

hatásfok =  0.1000
W =  1.000
Qfel =  10.000
check: Qfel- Qle-W =  0.0000000

---------------------------------------------------

In [10]:
sarkok= [array([1,2]),array([3,2]),array([3,1]),array([1,1])]
gamma=5/3

print ('sarkok koordinátái: ',sarkok)
print()
#print(len(sarkok))
   
res = sokszog(sarkok,gamma)

print('hatásfok = ',"%.4f" % res[0])
print('W = ',"%.3f" % res[1])
print('Qfel = ',"%.3f" % res[2])
print('check: Qfel- Qle-W = ',"%.7f" % res[3])
sarkok koordinátái:  [array([1, 2]), array([3, 2]), array([3, 1]), array([1, 1])]

hatásfok =  0.1739
W =  2.000
Qfel =  11.500
check: Qfel- Qle-W =  0.0000000

---------------------------------------------------

In [11]:
nsarok = 4
gamma=5/3

x0=3/2
y0=3/2

sarkok = []
for i in range(0,nsarok) : 
         sarkok.append(array([x0+cos(i*2*pi/nsarok),y0 -sin(i*2*pi/nsarok)]))

print ('sarkok koordinátái: ',sarkok)
print()
#print(len(sarkok))
   
res = sokszog(sarkok,gamma)

print('hatásfok = ',"%.4f" % res[0])
print('W = ',"%.3f" % res[1])
print('Qfel = ',"%.3f" % res[2])
print('check: Qfel- Qle-W = ',"%.7f" % res[3])
sarkok koordinátái:  [array([ 2.5,  1.5]), array([ 1.5,  0.5]), array([ 0.5,  1.5]), array([ 1.5,  2.5])]

hatásfok =  0.2319
W =  2.000
Qfel =  8.625
check: Qfel- Qle-W =  0.0000000

---------------------------------------------------

In [12]:
nsarok = 5
gamma=5/3

x0=3/2
y0=3/2

sarkok = []
for i in range(0,nsarok) : 
         sarkok.append(array([x0+cos(i*2*pi/nsarok),y0 -sin(i*2*pi/nsarok)]))

print ('sarkok koordinátái: ',sarkok)
print()
#print(len(sarkok))
   
res = sokszog(sarkok,gamma)

print('hatásfok = ',"%.4f" % res[0])
print('W = ',"%.3f" % res[1])
print('Qfel = ',"%.3f" % res[2])
print('check: Qfel- Qle-W = ',"%.7f" % res[3])
sarkok koordinátái:  [array([ 2.5,  1.5]), array([ 1.80901699,  0.54894348]), array([ 0.69098301,  0.91221475]), array([ 0.69098301,  2.08778525]), array([ 1.80901699,  2.45105652])]

hatásfok =  0.2713
W =  2.378
Qfel =  8.763
check: Qfel- Qle-W =  0.0000000

---------------------------------------------------

In [13]:
nsarok = 6
gamma=5/3

x0=3/2
y0=3/2

sarkok = []
for i in range(0,nsarok) : 
         sarkok.append(array([x0+cos(i*2*pi/nsarok),y0 -sin(i*2*pi/nsarok)]))

print ('sarkok koordinátái: ',sarkok)
print()
#print(len(sarkok))
   
res = sokszog(sarkok,gamma)

print('hatásfok = ',"%.4f" % res[0])
print('W = ',"%.3f" % res[1])
print('Qfel = ',"%.3f" % res[2])
print('check: Qfel- Qle-W = ',"%.7f" % res[3])
sarkok koordinátái:  [array([ 2.5,  1.5]), array([ 2.       ,  0.6339746]), array([ 1.       ,  0.6339746]), array([ 0.5,  1.5]), array([ 1.       ,  2.3660254]), array([ 2.       ,  2.3660254])]

hatásfok =  0.2759
W =  2.598
Qfel =  9.417
check: Qfel- Qle-W =  0.0000000

---------------------------------------------------

In [14]:
nsarok = 17
gamma=5/3

x0=1
y0=1

sarkok = []
for i in range(0,nsarok) : 
         sarkok.append(array([x0+cos(i*2*pi/nsarok),y0 -sin(i*2*pi/nsarok)]))

print ('sarkok koordinátái: ',sarkok)
print()
#print(len(sarkok))
   
res = sokszog(sarkok,gamma)

print('hatásfok = ',"%.4f" % res[0])
print('W = ',"%.3f" % res[1])
print('Qfel = ',"%.3f" % res[2])
print('check: Qfel- Qle-W = ',"%.7f" % res[3])
sarkok koordinátái:  [array([ 2.,  1.]), array([ 1.93247223,  0.63875833]), array([ 1.73900892,  0.32630436]), array([ 1.44573836,  0.10483671]), array([ 1.09226836,  0.00426582]), array([ 0.72633701,  0.03817436]), array([ 0.39736536,  0.20198277]), array([ 0.14978286,  0.47356784]), array([ 0.0170269 ,  0.81625048]), array([ 0.0170269 ,  1.18374952]), array([ 0.14978286,  1.52643216]), array([ 0.39736536,  1.79801723]), array([ 0.72633701,  1.96182564]), array([ 1.09226836,  1.99573418]), array([ 1.44573836,  1.89516329]), array([ 1.73900892,  1.67369564]), array([ 1.93247223,  1.36124167])]

hatásfok =  0.4056
W =  3.071
Qfel =  7.569
check: Qfel- Qle-W =  0.0000000

---------------------------------------------------

In [15]:
# otagu csillag alaku korfolyamat 
nc = 5
gamma=5/3
x0 = 1.25
y0 = 1.25
fi0 = 0* pi/2

rr = sin(pi/10)/sin(54*pi/180)

sarkok1 = []
sarkok2 = []
for i in range(0,nc) : 
         sarkok1.append(array([x0 + cos(fi0 + pi/2-i*2*pi/nc),y0 + sin(fi0 + pi/2-i*2*pi/nc)]))
for i in range(0,nc):
         sarkok2.append(array([x0 + rr*cos(fi0 - 36*pi/180+pi/2-i*2*pi/nc),y0 + rr*sin(fi0 - 36*pi/180+pi/2-i*2*pi/nc)]))

sarkok = []
for i in range(0,nc):
        
            sarkok.append(array(sarkok1[i]))
            sarkok.append(array(sarkok2[i]))
            
print ('sarkok koordinátái: ',sarkok)
print()
#print(len(sarkok))
   
res = sokszog(sarkok,gamma)

print('hatásfok = ',"%.4f" % res[0])
print('W = ',"%.3f" % res[1])
print('Qfel = ',"%.3f" % res[2])
print('check: Qfel- Qle-W = ',"%.7f" % res[3])
sarkok koordinátái:  [array([ 1.25,  2.25]), array([ 1.47451399,  1.55901699]), array([ 2.20105652,  1.55901699]), array([ 1.61327126,  1.13196601]), array([ 1.83778525,  0.44098301]), array([ 1.25      ,  0.86803399]), array([ 0.66221475,  0.44098301]), array([ 0.88672874,  1.13196601]), array([ 0.29894348,  1.55901699]), array([ 1.02548601,  1.55901699])]

hatásfok =  0.1208
W =  1.123
Qfel =  9.295
check: Qfel- Qle-W =  0.0000000
In [16]:
from random import randint
print(uniform(2,10))
4.45143133499228

---------------------------------------------------

Random polygon, n= 5 sarokkal

In [17]:
nd=5
rmin=1
rmax=10

sarkok = []
for i in range(0,nd):
    sarkok.append(array([uniform(rmin,rmax),uniform(rmin,rmax)]))

gamma=5/3

print ('sarkok koordinátái: ',sarkok)
print()
#print(len(sarkok))
   
res = sokszog(sarkok,gamma)

print('hatásfok = ',"%.4f" % res[0])
print('W = ',"%.3f" % res[1])
print('Qfel = ',"%.3f" % res[2])
print('check: Qfel- Qle-W = ',"%.7f" % res[3])
sarkok koordinátái:  [array([ 2.39386033,  2.13516377]), array([ 9.97895118,  7.76442636]), array([ 8.37753518,  8.54698352]), array([ 3.97875582,  3.39768951]), array([ 6.58872584,  4.42253584])]

hatásfok =  -0.0297
W =  -5.336
Qfel =  179.735
check: Qfel- Qle-W =  0.0000000
In [ ]:
 
In [ ]: